Release 10.1A: OpenEdge Development:
Progress Dynamics Advanced Development


SmartObject table

The ryc_smartobject table has a record for every application element that can be considered an object. This includes SmartObjects, DataFields (the Repository’s record of database fields from the application), and procedure files that are in any way maintained or controlled through the framework.

Note: Progress Dynamics Version 1 users might be aware of a gsc_object table. The gsc_object table has been merged into the ryc_smartobject table.

In the case of dynamic SmartObjects, every piece of information about the object definition is stored in the Repository, and its ryc_smartobject record acts as a header for all those other related records. In the case of procedures, they can be registered in the Repository so that they can be related to other objects.

Procedural objects have a SmartObject record and possibly other related records for security or other purposes, but their definition is largely in the 4GL source code in the procedure itself. Procedures that must be registered in the Repository include:

Because the table holds information for many kinds of objects, not all of its fields are meaningful or used for all objects.

Objects must be assigned an object type and belong to a product module. This facilitates setting up security based on object types and modules, rather than having to secure every object individually.

The SmartObject table supports both physical (static) and logical (dynamic) objects. If the SmartObject itself is a physical, procedural object, then the link to the physical object in the SmartObject record (the field physical_smartobject_obj) is set to 0. This is because a static SmartObject does not require another procedure to realize it at run time. If it is a dynamic object, then the link to the physical object points to the procedure to use as the starting point when instantiating the dynamic object at run time. In other words, a logical object, such as a SmartDataBrowser, is represented by a record in this table whose physical_object_obj value points to the procedure responsible for instantiating all dynamic SmartDataBrowsers.

If the object is flagged as a generic_object, that is, a physical object that is the driver for a class of dynamic objects, then no security allocations, menus, etc. can be allocated to it, as it is useless without the dynamic portions being built first against the logical objects that use it.

The name of the object is stored in the object_filename field. Note that this is a bit of a misnomer, since most objects in this table are not files on disk at all. For logical objects, the object name is specified without a file extension, and the path is not relevant. For procedural objects, the name might or might not include the filename extension, depending on how the procedure is registered. Logic procedures created by the Object Generator, for example, do not have the .p extension as part of the object name. Procedures that are registered through the AppBuilder, using its File Register In Repository option, do have the extension as part of the object_filename. In either case, the extension for a procedure is also stored in a separate field. The object_path field provides the relative pathname information to locate the object.

All objects have an object_type_obj. This points to the definition of the object type in the gsc_object_type table. Security allocations can be defined against an object type so that they apply to all objects of that type without each individual object needing a security allocation. Object types are also used to define default values for many object attributes or properties, which are inherited by every object of that type that is created.

The ryc_smartobject table contains object IDs pointing to its layout, its object type, its product_module, another object that it can be run by, and if this object displays data for an SDO, its related sdo_snartibhect. This table contains the following fields:


Copyright © 2005 Progress Software Corporation
www.progress.com
Voice: (781) 280-4000
Fax: (781) 280-4095